#include <iostream>
#include <sstream>
#include <vector>
#include <map>
#include <stdio.h>

#include "BasisProbe.h"

#include "DataSet.h"
#include "Mote.h"
#include "ModelGenerator.h"
#include "MinizincPlanner.h"


int main(void)
{
  std::cout << "basis: insert basisprobe" << std::endl;

  int epoch = 204;
  int energy = 204;
  int sparseness = 4;

  std::map<std::string, double> parameters;
  parameters["points"] = 2;
  parameters["utility"] = 100;
  parameters["energy"] = 1;
  parameters["duration"] = 1;
  parameters["transmit"] = 1;
  parameters["bandwidth"] = 1;
  parameters["frequency"] = 1;
  DataSet esbase;
  BasisProbe::generateDataSet(parameters, esbase);


  parameters["points"] = 2;
  parameters["utility"] = 100;
  parameters["energy"] = 1;
  parameters["duration"] = 1;
  parameters["transmit"] = 1;
  parameters["bandwidth"] = 1;
  parameters["frequency"] = 1;
  DataSet esevent;
  BasisProbe::generateDataSet(parameters, esevent);

  DataSet es01(esbase);
  DataSet es02(esbase);
  DataSet es03(esbase);
  DataSet es04(esbase);
  DataSet es05(esbase);
  DataSet es06(esbase);
  DataSet es07(esbase);
  DataSet es08(esbase);
  DataSet es09(esbase);
  DataSet es10(esbase);
  DataSet es11(esbase);
  DataSet es12(esbase);
  DataSet es13(esbase);
  DataSet es14(esbase);
  DataSet es15(esbase);
  DataSet es16(esbase);
  DataSet es17(esbase);
  DataSet es18(esbase);
  DataSet es19(esbase);
  DataSet es20(esbase);
  DataSet es21(esbase);
  DataSet es22(esbase);
  DataSet es23(esbase);
  DataSet es24(esbase);
  DataSet es25(esbase);
  DataSet es26(esbase);
  DataSet es27(esbase);
  DataSet es28(esbase);
  DataSet es29(esbase);
  DataSet es30(esbase);
  DataSet es31(esbase);
  DataSet es32(esbase);
  DataSet es33(esbase);
  DataSet es34(esbase);
  DataSet es35(esbase);
  DataSet es36(esbase);
  DataSet es37(esbase);
  DataSet es38(esbase);
  DataSet es39(esbase);
  DataSet es40(esbase);
  DataSet es41(esbase);
  DataSet es42(esbase);
  DataSet es43(esbase);
  DataSet es44(esbase);
  DataSet es45(esbase);
  DataSet es46(esbase);
  DataSet es47(esbase);
  DataSet es48(esbase);
  DataSet es49(esbase);
  DataSet es50(esbase);
  DataSet es51(esbase);
  DataSet es52(esbase);
  DataSet es53(esbase);
  DataSet es54(esbase);
  DataSet es55(esbase);
  DataSet es56(esbase);
  DataSet es57(esbase);
  DataSet es58(esbase);
  DataSet es59(esbase);
  DataSet es60(esbase);
  DataSet es61(esbase);
  DataSet es62(esbase);
  DataSet es63(esbase);
  DataSet es64(esbase);
  DataSet es65(esbase);
  DataSet es66(esbase);
  DataSet es67(esbase);
  DataSet es68(esbase);
  DataSet es69(esbase);
  DataSet es70(esbase);
  DataSet es71(esbase);
  DataSet es72(esbase);
  DataSet es73(esbase);
  DataSet es74(esbase);
  DataSet es75(esbase);
  DataSet es76(esbase);
  DataSet es77(esbase);
  DataSet es78(esbase);
  DataSet es79(esbase);
  DataSet es80(esbase);
  DataSet es81(esbase);
  DataSet es82(esbase);
  DataSet es83(esbase);
  DataSet es84(esbase);
  DataSet es85(esbase);
  DataSet es86(esbase);
  DataSet es87(esbase);
  DataSet es88(esbase);
  DataSet es89(esbase);
  DataSet es90(esbase);
  DataSet es91(esbase);
  DataSet es92(esbase);
  DataSet es93(esbase);
  DataSet es94(esbase);
  DataSet es95(esbase);
  DataSet es96(esbase);
  DataSet es97(esbase);
  DataSet es98(esbase);
  DataSet es99(esbase);
  DataSet es100(esbase);

  DataSet event01(esevent);
  DataSet event02(esevent);
  DataSet event03(esevent);
  DataSet event04(esevent);
  DataSet event05(esevent);
  DataSet event06(esevent);
  DataSet event07(esevent);
  DataSet event08(esevent);
  DataSet event09(esevent);
  DataSet event10(esevent);
  DataSet event11(esevent);
  DataSet event12(esevent);
  DataSet event13(esevent);
  DataSet event14(esevent);
  DataSet event15(esevent);
  DataSet event16(esevent);
  DataSet event17(esevent);
  DataSet event18(esevent);
  DataSet event19(esevent);
  DataSet event20(esevent);
  DataSet event21(esevent);
  DataSet event22(esevent);
  DataSet event23(esevent);
  DataSet event24(esevent);
  DataSet event25(esevent);
  DataSet event26(esevent);
  DataSet event27(esevent);
  DataSet event28(esevent);
  DataSet event29(esevent);
  DataSet event30(esevent);
  DataSet event31(esevent);
  DataSet event32(esevent);
  DataSet event33(esevent);
  DataSet event34(esevent);
  DataSet event35(esevent);
  DataSet event36(esevent);
  DataSet event37(esevent);
  DataSet event38(esevent);
  DataSet event39(esevent);
  DataSet event40(esevent);
  DataSet event41(esevent);
  DataSet event42(esevent);
  DataSet event43(esevent);
  DataSet event44(esevent);
  DataSet event45(esevent);
  DataSet event46(esevent);
  DataSet event47(esevent);
  DataSet event48(esevent);
  DataSet event49(esevent);
  DataSet event50(esevent);
  DataSet event51(esevent);
  DataSet event52(esevent);
  DataSet event53(esevent);
  DataSet event54(esevent);
  DataSet event55(esevent);
  DataSet event56(esevent);
  DataSet event57(esevent);
  DataSet event58(esevent);
  DataSet event59(esevent);
  DataSet event60(esevent);
  DataSet event61(esevent);
  DataSet event62(esevent);
  DataSet event63(esevent);
  DataSet event64(esevent);
  DataSet event65(esevent);
  DataSet event66(esevent);
  DataSet event67(esevent);
  DataSet event68(esevent);
  DataSet event69(esevent);
  DataSet event70(esevent);
  DataSet event71(esevent);
  DataSet event72(esevent);
  DataSet event73(esevent);
  DataSet event74(esevent);
  DataSet event75(esevent);
  DataSet event76(esevent);
  DataSet event77(esevent);
  DataSet event78(esevent);
  DataSet event79(esevent);
  DataSet event80(esevent);
  DataSet event81(esevent);
  DataSet event82(esevent);
  DataSet event83(esevent);
  DataSet event84(esevent);
  DataSet event85(esevent);
  DataSet event86(esevent);
  DataSet event87(esevent);
  DataSet event88(esevent);
  DataSet event89(esevent);
  DataSet event90(esevent);
  DataSet event91(esevent);
  DataSet event92(esevent);
  DataSet event93(esevent);
  DataSet event94(esevent);
  DataSet event95(esevent);
  DataSet event96(esevent);
  DataSet event97(esevent);
  DataSet event98(esevent);
  DataSet event99(esevent);
  DataSet event100(esevent);

  Mote mod01 = Mote("m01");
  Mote mod02 = Mote("m02");
  Mote mod03 = Mote("m03");
  Mote mod04 = Mote("m04");
  Mote mod05 = Mote("m05");
  Mote mod06 = Mote("m06");
  Mote mod07 = Mote("m07");
  Mote mod08 = Mote("m08");
  Mote mod09 = Mote("m09");
  Mote mod10 = Mote("m10");
  Mote mod11 = Mote("m11");
  Mote mod12 = Mote("m12");
  Mote mod13 = Mote("m13");
  Mote mod14 = Mote("m14");
  Mote mod15 = Mote("m15");
  Mote mod16 = Mote("m16");
  Mote mod17 = Mote("m17");
  Mote mod18 = Mote("m18");
  Mote mod19 = Mote("m19");
  Mote mod20 = Mote("m20");
  Mote mod21 = Mote("m21");
  Mote mod22 = Mote("m22");
  Mote mod23 = Mote("m23");
  Mote mod24 = Mote("m24");
  Mote mod25 = Mote("m25");
  Mote mod26 = Mote("m26");
  Mote mod27 = Mote("m27");
  Mote mod28 = Mote("m28");
  Mote mod29 = Mote("m29");
  Mote mod30 = Mote("m30");
  Mote mod31 = Mote("m31");
  Mote mod32 = Mote("m32");
  Mote mod33 = Mote("m33");
  Mote mod34 = Mote("m34");
  Mote mod35 = Mote("m35");
  Mote mod36 = Mote("m36");
  Mote mod37 = Mote("m37");
  Mote mod38 = Mote("m38");
  Mote mod39 = Mote("m39");
  Mote mod40 = Mote("m40");
  Mote mod41 = Mote("m41");
  Mote mod42 = Mote("m42");
  Mote mod43 = Mote("m43");
  Mote mod44 = Mote("m44");
  Mote mod45 = Mote("m45");
  Mote mod46 = Mote("m46");
  Mote mod47 = Mote("m47");
  Mote mod48 = Mote("m48");
  Mote mod49 = Mote("m49");
  Mote mod50 = Mote("m50");
  Mote mod51 = Mote("m51");
  Mote mod52 = Mote("m52");
  Mote mod53 = Mote("m53");
  Mote mod54 = Mote("m54");
  Mote mod55 = Mote("m55");
  Mote mod56 = Mote("m56");
  Mote mod57 = Mote("m57");
  Mote mod58 = Mote("m58");
  Mote mod59 = Mote("m59");
  Mote mod60 = Mote("m60");
  Mote mod61 = Mote("m61");
  Mote mod62 = Mote("m62");
  Mote mod63 = Mote("m63");
  Mote mod64 = Mote("m64");
  Mote mod65 = Mote("m65");
  Mote mod66 = Mote("m66");
  Mote mod67 = Mote("m67");
  Mote mod68 = Mote("m68");
  Mote mod69 = Mote("m69");
  Mote mod70 = Mote("m70");
  Mote mod71 = Mote("m71");
  Mote mod72 = Mote("m72");
  Mote mod73 = Mote("m73");
  Mote mod74 = Mote("m74");
  Mote mod75 = Mote("m75");
  Mote mod76 = Mote("m76");
  Mote mod77 = Mote("m77");
  Mote mod78 = Mote("m78");
  Mote mod79 = Mote("m79");
  Mote mod80 = Mote("m80");
  Mote mod81 = Mote("m81");
  Mote mod82 = Mote("m82");
  Mote mod83 = Mote("m83");
  Mote mod84 = Mote("m84");
  Mote mod85 = Mote("m85");
  Mote mod86 = Mote("m86");
  Mote mod87 = Mote("m87");
  Mote mod88 = Mote("m88");
  Mote mod89 = Mote("m89");
  Mote mod90 = Mote("m90");
  Mote mod91 = Mote("m91");
  Mote mod92 = Mote("m92");
  Mote mod93 = Mote("m93");
  Mote mod94 = Mote("m94");
  Mote mod95 = Mote("m95");
  Mote mod96 = Mote("m96");
  Mote mod97 = Mote("m97");
  Mote mod98 = Mote("m98");
  Mote mod99 = Mote("m99");
  Mote mod100 = Mote("m100");

  mod01.setEpoch(epoch);
  mod02.setEpoch(epoch);
  mod03.setEpoch(epoch);
  mod04.setEpoch(epoch);
  mod05.setEpoch(epoch);
  mod06.setEpoch(epoch);
  mod07.setEpoch(epoch);
  mod08.setEpoch(epoch);
  mod09.setEpoch(epoch);
  mod10.setEpoch(epoch);
  mod11.setEpoch(epoch);
  mod12.setEpoch(epoch);
  mod13.setEpoch(epoch);
  mod14.setEpoch(epoch);
  mod15.setEpoch(epoch);
  mod16.setEpoch(epoch);
  mod17.setEpoch(epoch);
  mod18.setEpoch(epoch);
  mod19.setEpoch(epoch);
  mod20.setEpoch(epoch);
  mod21.setEpoch(epoch);
  mod22.setEpoch(epoch);
  mod23.setEpoch(epoch);
  mod24.setEpoch(epoch);
  mod25.setEpoch(epoch);
  mod26.setEpoch(epoch);
  mod27.setEpoch(epoch);
  mod28.setEpoch(epoch);
  mod29.setEpoch(epoch);
  mod30.setEpoch(epoch);
  mod31.setEpoch(epoch);
  mod32.setEpoch(epoch);
  mod33.setEpoch(epoch);
  mod34.setEpoch(epoch);
  mod35.setEpoch(epoch);
  mod36.setEpoch(epoch);
  mod37.setEpoch(epoch);
  mod38.setEpoch(epoch);
  mod39.setEpoch(epoch);
  mod40.setEpoch(epoch);
  mod41.setEpoch(epoch);
  mod42.setEpoch(epoch);
  mod43.setEpoch(epoch);
  mod44.setEpoch(epoch);
  mod45.setEpoch(epoch);
  mod46.setEpoch(epoch);
  mod47.setEpoch(epoch);
  mod48.setEpoch(epoch);
  mod49.setEpoch(epoch);
  mod50.setEpoch(epoch);
  mod51.setEpoch(epoch);
  mod52.setEpoch(epoch);
  mod53.setEpoch(epoch);
  mod54.setEpoch(epoch);
  mod55.setEpoch(epoch);
  mod56.setEpoch(epoch);
  mod57.setEpoch(epoch);
  mod58.setEpoch(epoch);
  mod59.setEpoch(epoch);
  mod60.setEpoch(epoch);
  mod61.setEpoch(epoch);
  mod62.setEpoch(epoch);
  mod63.setEpoch(epoch);
  mod64.setEpoch(epoch);
  mod65.setEpoch(epoch);
  mod66.setEpoch(epoch);
  mod67.setEpoch(epoch);
  mod68.setEpoch(epoch);
  mod69.setEpoch(epoch);
  mod70.setEpoch(epoch);
  mod71.setEpoch(epoch);
  mod72.setEpoch(epoch);
  mod73.setEpoch(epoch);
  mod74.setEpoch(epoch);
  mod75.setEpoch(epoch);
  mod76.setEpoch(epoch);
  mod77.setEpoch(epoch);
  mod78.setEpoch(epoch);
  mod79.setEpoch(epoch);
  mod80.setEpoch(epoch);
  mod81.setEpoch(epoch);
  mod82.setEpoch(epoch);
  mod83.setEpoch(epoch);
  mod84.setEpoch(epoch);
  mod85.setEpoch(epoch);
  mod86.setEpoch(epoch);
  mod87.setEpoch(epoch);
  mod88.setEpoch(epoch);
  mod89.setEpoch(epoch);
  mod90.setEpoch(epoch);
  mod91.setEpoch(epoch);
  mod92.setEpoch(epoch);
  mod93.setEpoch(epoch);
  mod94.setEpoch(epoch);
  mod95.setEpoch(epoch);
  mod96.setEpoch(epoch);
  mod97.setEpoch(epoch);
  mod98.setEpoch(epoch);
  mod99.setEpoch(epoch);
  mod100.setEpoch(epoch);

  mod01.setSensorSparseness(sparseness);
  mod02.setSensorSparseness(sparseness);
  mod03.setSensorSparseness(sparseness);
  mod04.setSensorSparseness(sparseness);
  mod05.setSensorSparseness(sparseness);
  mod06.setSensorSparseness(sparseness);
  mod07.setSensorSparseness(sparseness);
  mod08.setSensorSparseness(sparseness);
  mod09.setSensorSparseness(sparseness);
  mod10.setSensorSparseness(sparseness);
  mod11.setSensorSparseness(sparseness);
  mod12.setSensorSparseness(sparseness);
  mod13.setSensorSparseness(sparseness);
  mod14.setSensorSparseness(sparseness);
  mod15.setSensorSparseness(sparseness);
  mod16.setSensorSparseness(sparseness);
  mod17.setSensorSparseness(sparseness);
  mod18.setSensorSparseness(sparseness);
  mod19.setSensorSparseness(sparseness);
  mod20.setSensorSparseness(sparseness);
  mod21.setSensorSparseness(sparseness);
  mod22.setSensorSparseness(sparseness);
  mod23.setSensorSparseness(sparseness);
  mod24.setSensorSparseness(sparseness);
  mod25.setSensorSparseness(sparseness);
  mod26.setSensorSparseness(sparseness);
  mod27.setSensorSparseness(sparseness);
  mod28.setSensorSparseness(sparseness);
  mod29.setSensorSparseness(sparseness);
  mod30.setSensorSparseness(sparseness);
  mod31.setSensorSparseness(sparseness);
  mod32.setSensorSparseness(sparseness);
  mod33.setSensorSparseness(sparseness);
  mod34.setSensorSparseness(sparseness);
  mod35.setSensorSparseness(sparseness);
  mod36.setSensorSparseness(sparseness);
  mod37.setSensorSparseness(sparseness);
  mod38.setSensorSparseness(sparseness);
  mod39.setSensorSparseness(sparseness);
  mod40.setSensorSparseness(sparseness);
  mod41.setSensorSparseness(sparseness);
  mod42.setSensorSparseness(sparseness);
  mod43.setSensorSparseness(sparseness);
  mod44.setSensorSparseness(sparseness);
  mod45.setSensorSparseness(sparseness);
  mod46.setSensorSparseness(sparseness);
  mod47.setSensorSparseness(sparseness);
  mod48.setSensorSparseness(sparseness);
  mod49.setSensorSparseness(sparseness);
  mod50.setSensorSparseness(sparseness);
  mod51.setSensorSparseness(sparseness);
  mod52.setSensorSparseness(sparseness);
  mod53.setSensorSparseness(sparseness);
  mod54.setSensorSparseness(sparseness);
  mod55.setSensorSparseness(sparseness);
  mod56.setSensorSparseness(sparseness);
  mod57.setSensorSparseness(sparseness);
  mod58.setSensorSparseness(sparseness);
  mod59.setSensorSparseness(sparseness);
  mod60.setSensorSparseness(sparseness);
  mod61.setSensorSparseness(sparseness);
  mod62.setSensorSparseness(sparseness);
  mod63.setSensorSparseness(sparseness);
  mod64.setSensorSparseness(sparseness);
  mod65.setSensorSparseness(sparseness);
  mod66.setSensorSparseness(sparseness);
  mod67.setSensorSparseness(sparseness);
  mod68.setSensorSparseness(sparseness);
  mod69.setSensorSparseness(sparseness);
  mod70.setSensorSparseness(sparseness);
  mod71.setSensorSparseness(sparseness);
  mod72.setSensorSparseness(sparseness);
  mod73.setSensorSparseness(sparseness);
  mod74.setSensorSparseness(sparseness);
  mod75.setSensorSparseness(sparseness);
  mod76.setSensorSparseness(sparseness);
  mod77.setSensorSparseness(sparseness);
  mod78.setSensorSparseness(sparseness);
  mod79.setSensorSparseness(sparseness);
  mod80.setSensorSparseness(sparseness);
  mod81.setSensorSparseness(sparseness);
  mod82.setSensorSparseness(sparseness);
  mod83.setSensorSparseness(sparseness);
  mod84.setSensorSparseness(sparseness);
  mod85.setSensorSparseness(sparseness);
  mod86.setSensorSparseness(sparseness);
  mod87.setSensorSparseness(sparseness);
  mod88.setSensorSparseness(sparseness);
  mod89.setSensorSparseness(sparseness);
  mod90.setSensorSparseness(sparseness);
  mod91.setSensorSparseness(sparseness);
  mod92.setSensorSparseness(sparseness);
  mod93.setSensorSparseness(sparseness);
  mod94.setSensorSparseness(sparseness);
  mod95.setSensorSparseness(sparseness);
  mod96.setSensorSparseness(sparseness);
  mod97.setSensorSparseness(sparseness);
  mod98.setSensorSparseness(sparseness);
  mod99.setSensorSparseness(sparseness);
  mod100.setSensorSparseness(sparseness);

  mod01.setEnergy(energy);
  mod02.setEnergy(energy);

  mod03.setEnergy(energy);
  mod04.setEnergy(energy);
  mod05.setEnergy(energy);
  mod06.setEnergy(energy);

  mod07.setEnergy(energy);
  mod08.setEnergy(energy);
  mod09.setEnergy(energy);
  mod10.setEnergy(energy);
  mod11.setEnergy(energy);
  mod12.setEnergy(energy);
  mod13.setEnergy(energy);
  mod14.setEnergy(energy);

  mod15.setEnergy(energy);
  mod16.setEnergy(energy);
  mod17.setEnergy(energy);
  mod18.setEnergy(energy);
  mod19.setEnergy(energy);
  mod20.setEnergy(energy);
  mod21.setEnergy(energy);
  mod22.setEnergy(energy);
  mod23.setEnergy(energy);
  mod24.setEnergy(energy);
  mod25.setEnergy(energy);
  mod26.setEnergy(energy);
  mod27.setEnergy(energy);
  mod28.setEnergy(energy);
  mod29.setEnergy(energy);

  mod30.setEnergy(energy);
  mod31.setEnergy(energy);
  mod32.setEnergy(energy);
  mod33.setEnergy(energy);
  mod34.setEnergy(energy);
  mod35.setEnergy(energy);
  mod36.setEnergy(energy);
  mod37.setEnergy(energy);
  mod38.setEnergy(energy);
  mod39.setEnergy(energy);
  mod40.setEnergy(energy);
  mod41.setEnergy(energy);
  mod42.setEnergy(energy);
  mod43.setEnergy(energy);
  mod44.setEnergy(energy);
  mod45.setEnergy(energy);
  mod46.setEnergy(energy);
  mod47.setEnergy(energy);
  mod48.setEnergy(energy);
  mod49.setEnergy(energy);
  mod50.setEnergy(energy);
  mod51.setEnergy(energy);
  mod52.setEnergy(energy);
  mod53.setEnergy(energy);
  mod54.setEnergy(energy);
  mod55.setEnergy(energy);
  mod56.setEnergy(energy);
  mod57.setEnergy(energy);
  mod58.setEnergy(energy);
  mod59.setEnergy(energy);
  mod60.setEnergy(energy);
  mod61.setEnergy(energy);
  mod62.setEnergy(energy);
  mod63.setEnergy(energy);
  mod64.setEnergy(energy);
  mod65.setEnergy(energy);
  mod66.setEnergy(energy);
  mod67.setEnergy(energy);
  mod68.setEnergy(energy);
  mod69.setEnergy(energy);
  mod70.setEnergy(energy);
  mod71.setEnergy(energy);
  mod72.setEnergy(energy);
  mod73.setEnergy(energy);
  mod74.setEnergy(energy);
  mod75.setEnergy(energy);
  mod76.setEnergy(energy);
  mod77.setEnergy(energy);
  mod78.setEnergy(energy);
  mod79.setEnergy(energy);
  mod80.setEnergy(energy);
  mod81.setEnergy(energy);
  mod82.setEnergy(energy);
  mod83.setEnergy(energy);
  mod84.setEnergy(energy);
  mod85.setEnergy(energy);
  mod86.setEnergy(energy);
  mod87.setEnergy(energy);
  mod88.setEnergy(energy);
  mod89.setEnergy(energy);
  mod90.setEnergy(energy);
  mod91.setEnergy(energy);
  mod92.setEnergy(energy);
  mod93.setEnergy(energy);
  mod94.setEnergy(energy);
  mod95.setEnergy(energy);
  mod96.setEnergy(energy);
  mod97.setEnergy(energy);
  mod98.setEnergy(energy);
  mod99.setEnergy(energy);
  mod100.setEnergy(energy);

/*
  mod01.setEnergy(energy/2);
  mod02.setEnergy(energy/2);

  mod03.setEnergy(energy/4);
  mod04.setEnergy(energy/4);
  mod05.setEnergy(energy/4);
  mod06.setEnergy(energy/4);

  mod07.setEnergy(energy/8);
  mod08.setEnergy(energy/8);
  mod09.setEnergy(energy/8);
  mod10.setEnergy(energy/8);
  mod11.setEnergy(energy/8);
  mod12.setEnergy(energy/8);
  mod13.setEnergy(energy/8);
  mod14.setEnergy(energy/8);

  mod15.setEnergy(energy/16);
  mod16.setEnergy(energy/16);
  mod17.setEnergy(energy/16);
  mod18.setEnergy(energy/16);
  mod19.setEnergy(energy/16);
  mod20.setEnergy(energy/16);
  mod21.setEnergy(energy/16);
  mod22.setEnergy(energy/16);
  mod23.setEnergy(energy/16);
  mod24.setEnergy(energy/16);
  mod25.setEnergy(energy/16);
  mod26.setEnergy(energy/16);
  mod27.setEnergy(energy/16);
  mod28.setEnergy(energy/16);
  mod29.setEnergy(energy/16);
  mod30.setEnergy(energy/16);
*/
  mod01.addDataSet(es01);
  mod02.addDataSet(es02);
  mod03.addDataSet(es03);
  mod04.addDataSet(es04);
  mod05.addDataSet(es05);
  mod06.addDataSet(es06);
  mod07.addDataSet(es07);
  mod08.addDataSet(es08);
  mod09.addDataSet(es09);
  mod10.addDataSet(es10);
  mod11.addDataSet(es11);
  mod12.addDataSet(es12);
  mod13.addDataSet(es13);
  mod14.addDataSet(es14);
  mod15.addDataSet(es15);
  mod16.addDataSet(es16);
  mod17.addDataSet(es17);
  mod18.addDataSet(es18);
  mod19.addDataSet(es19);
  mod20.addDataSet(es20);
  mod21.addDataSet(es21);
  mod22.addDataSet(es22);
  mod23.addDataSet(es23);
  mod24.addDataSet(es24);
  mod25.addDataSet(es25);
  mod26.addDataSet(es26);
  mod27.addDataSet(es27);
  mod28.addDataSet(es28);
  mod29.addDataSet(es29);
  mod30.addDataSet(es30);
  mod31.addDataSet(es31);
  mod32.addDataSet(es32);
  mod33.addDataSet(es33);
  mod34.addDataSet(es34);
  mod35.addDataSet(es35);
  mod36.addDataSet(es36);
  mod37.addDataSet(es37);
  mod38.addDataSet(es38);
  mod39.addDataSet(es39);
  mod40.addDataSet(es40);
  mod41.addDataSet(es41);
  mod42.addDataSet(es42);
  mod43.addDataSet(es43);
  mod44.addDataSet(es44);
  mod45.addDataSet(es45);
  mod46.addDataSet(es46);
  mod47.addDataSet(es47);
  mod48.addDataSet(es48);
  mod49.addDataSet(es49);
  mod50.addDataSet(es50);
  mod51.addDataSet(es51);
  mod52.addDataSet(es52);
  mod53.addDataSet(es53);
  mod54.addDataSet(es54);
  mod55.addDataSet(es55);
  mod56.addDataSet(es56);
  mod57.addDataSet(es57);
  mod58.addDataSet(es58);
  mod59.addDataSet(es59);
  mod60.addDataSet(es60);
  mod61.addDataSet(es61);
  mod62.addDataSet(es62);
  mod63.addDataSet(es63);
  mod64.addDataSet(es64);
  mod65.addDataSet(es65);
  mod66.addDataSet(es66);
  mod67.addDataSet(es67);
  mod68.addDataSet(es68);
  mod69.addDataSet(es69);
  mod70.addDataSet(es70);
  mod71.addDataSet(es71);
  mod72.addDataSet(es72);
  mod73.addDataSet(es73);
  mod74.addDataSet(es74);
  mod75.addDataSet(es75);
  mod76.addDataSet(es76);
  mod77.addDataSet(es77);
  mod78.addDataSet(es78);
  mod79.addDataSet(es79);
  mod80.addDataSet(es80);
  mod81.addDataSet(es81);
  mod82.addDataSet(es82);
  mod83.addDataSet(es83);
  mod84.addDataSet(es84);
  mod85.addDataSet(es85);
  mod86.addDataSet(es86);
  mod87.addDataSet(es87);
  mod88.addDataSet(es88);
  mod89.addDataSet(es89);
  mod90.addDataSet(es90);
  mod91.addDataSet(es91);
  mod92.addDataSet(es92);
  mod93.addDataSet(es93);
  mod94.addDataSet(es94);
  mod95.addDataSet(es95);
  mod96.addDataSet(es96);
  mod97.addDataSet(es97);
  mod98.addDataSet(es98);
  mod99.addDataSet(es99);
  mod100.addDataSet(es100);

  mod01.addDataSet(event01);
  mod02.addDataSet(event02);
  mod03.addDataSet(event03);
  mod04.addDataSet(event04);
  mod05.addDataSet(event05);
  mod06.addDataSet(event06);
  mod07.addDataSet(event07);
  mod08.addDataSet(event08);
  mod09.addDataSet(event09);
  mod10.addDataSet(event10);
  mod11.addDataSet(event11);
  mod12.addDataSet(event12);
  mod13.addDataSet(event13);
  mod14.addDataSet(event14);
  mod15.addDataSet(event15);
  mod16.addDataSet(event16);
  mod17.addDataSet(event17);
  mod18.addDataSet(event18);
  mod19.addDataSet(event19);
  mod20.addDataSet(event20);
  mod21.addDataSet(event21);
  mod22.addDataSet(event22);
  mod23.addDataSet(event23);
  mod24.addDataSet(event24);
  mod25.addDataSet(event25);
  mod26.addDataSet(event26);
  mod27.addDataSet(event27);
  mod28.addDataSet(event28);
  mod29.addDataSet(event29);
  mod30.addDataSet(event30);
  mod31.addDataSet(event31);
  mod32.addDataSet(event32);
  mod33.addDataSet(event33);
  mod34.addDataSet(event34);
  mod35.addDataSet(event35);
  mod36.addDataSet(event36);
  mod37.addDataSet(event37);
  mod38.addDataSet(event38);
  mod39.addDataSet(event39);
  mod40.addDataSet(event40);
  mod41.addDataSet(event41);
  mod42.addDataSet(event42);
  mod43.addDataSet(event43);
  mod44.addDataSet(event44);
  mod45.addDataSet(event45);
  mod46.addDataSet(event46);
  mod47.addDataSet(event47);
  mod48.addDataSet(event48);
  mod49.addDataSet(event49);
  mod50.addDataSet(event50);
  mod51.addDataSet(event51);
  mod52.addDataSet(event52);
  mod53.addDataSet(event53);
  mod54.addDataSet(event54);
  mod55.addDataSet(event55);
  mod56.addDataSet(event56);
  mod57.addDataSet(event57);
  mod58.addDataSet(event58);
  mod59.addDataSet(event59);
  mod60.addDataSet(event60);
  mod61.addDataSet(event61);
  mod62.addDataSet(event62);
  mod63.addDataSet(event63);
  mod64.addDataSet(event64);
  mod65.addDataSet(event65);
  mod66.addDataSet(event66);
  mod67.addDataSet(event67);
  mod68.addDataSet(event68);
  mod69.addDataSet(event69);
  mod70.addDataSet(event70);
  mod71.addDataSet(event71);
  mod72.addDataSet(event72);
  mod73.addDataSet(event73);
  mod74.addDataSet(event74);
  mod75.addDataSet(event75);
  mod76.addDataSet(event76);
  mod77.addDataSet(event77);
  mod78.addDataSet(event78);
  mod79.addDataSet(event79);
  mod80.addDataSet(event80);
  mod81.addDataSet(event81);
  mod82.addDataSet(event82);
  mod83.addDataSet(event83);
  mod84.addDataSet(event84);
  mod85.addDataSet(event85);
  mod86.addDataSet(event86);
  mod87.addDataSet(event87);
  mod88.addDataSet(event88);
  mod89.addDataSet(event89);
  mod90.addDataSet(event90);
  mod91.addDataSet(event91);
  mod92.addDataSet(event92);
  mod93.addDataSet(event93);
  mod94.addDataSet(event94);
  mod95.addDataSet(event95);
  mod96.addDataSet(event96);
  mod97.addDataSet(event97);
  mod98.addDataSet(event98);
  mod99.addDataSet(event99);
  mod100.addDataSet(event100);

  ModelGenerator mm = ModelGenerator("luyf");

  mm.addMote(mod01);
  mm.addMote(mod02);

  mm.addMote(mod03);
  mm.addMote(mod04);

  mm.addMote(mod05);
  mm.addMote(mod06);

  mm.addMote(mod07);
  mm.addMote(mod08);

  mm.addMote(mod09);
  mm.addMote(mod10);

  mm.addMote(mod11);
  mm.addMote(mod12);
  mm.addMote(mod13);
  mm.addMote(mod14);

  mm.addMote(mod15);
  mm.addMote(mod16);
  mm.addMote(mod17);
  mm.addMote(mod18);

  mm.addMote(mod19);
  mm.addMote(mod20);
  mm.addMote(mod21);
  mm.addMote(mod22);
  mm.addMote(mod23);
  mm.addMote(mod24);
  mm.addMote(mod25);
  mm.addMote(mod26);
  mm.addMote(mod27);
  mm.addMote(mod28);
  mm.addMote(mod29);
  mm.addMote(mod30);

  mm.addMote(mod31);
  mm.addMote(mod32);
  mm.addMote(mod33);
  mm.addMote(mod34);
  mm.addMote(mod35);
  mm.addMote(mod36);
  mm.addMote(mod37);
  mm.addMote(mod38);
  mm.addMote(mod39);
  mm.addMote(mod40);
  mm.addMote(mod41);
  mm.addMote(mod42);
  mm.addMote(mod43);
  mm.addMote(mod44);
  mm.addMote(mod45);
  mm.addMote(mod46);
  mm.addMote(mod47);
  mm.addMote(mod48);
  mm.addMote(mod49);
  mm.addMote(mod50);
  mm.addMote(mod51);
  mm.addMote(mod52);
  mm.addMote(mod53);
  mm.addMote(mod54);
  mm.addMote(mod55);
  mm.addMote(mod56);
  mm.addMote(mod57);
  mm.addMote(mod58);
  mm.addMote(mod59);
  mm.addMote(mod60);
  mm.addMote(mod61);
  mm.addMote(mod62);
  mm.addMote(mod63);
  mm.addMote(mod64);
  mm.addMote(mod65);
  mm.addMote(mod66);
  mm.addMote(mod67);
  mm.addMote(mod68);
  mm.addMote(mod69);
  mm.addMote(mod70);
  mm.addMote(mod71);
  mm.addMote(mod72);
  mm.addMote(mod73);
  mm.addMote(mod74);
  mm.addMote(mod75);
  mm.addMote(mod76);
  mm.addMote(mod77);
  mm.addMote(mod78);
  mm.addMote(mod79);
  mm.addMote(mod80);
  mm.addMote(mod81);
  mm.addMote(mod82);
  mm.addMote(mod83);
  mm.addMote(mod84);
  mm.addMote(mod85);
  mm.addMote(mod86);
  mm.addMote(mod87);
  mm.addMote(mod88);
  mm.addMote(mod89);
  mm.addMote(mod90);
  mm.addMote(mod91);
  mm.addMote(mod92);
  mm.addMote(mod93);
  mm.addMote(mod94);
  mm.addMote(mod95);
  mm.addMote(mod96);
  mm.addMote(mod97);
  mm.addMote(mod98);
  mm.addMote(mod99);
  mm.addMote(mod100);

  mm.setEnergy(100);
  mm.setEpoch(100);


  /* route map */
  std::map<std::string, vector_string> neighbor_map;

  /* route map */
  std::map<std::string, vector_string> route_map;

  // layer 1
  std::vector<std::string> m01;
  m01.push_back("m01");

  m01.push_back("m03");
  m01.push_back("m07");
  m01.push_back("m08");
  m01.push_back("m15");
  m01.push_back("m16");
  m01.push_back("m17");
  m01.push_back("m18");

  m01.push_back("m04");
  m01.push_back("m09");
  m01.push_back("m10");
  m01.push_back("m19");
  m01.push_back("m20");
  m01.push_back("m21");
  m01.push_back("m22");

  m01.push_back("m31");
  m01.push_back("m32");
  m01.push_back("m33");
  m01.push_back("m34");
  m01.push_back("m35");
  m01.push_back("m36");
  m01.push_back("m37");
  m01.push_back("m38");
  m01.push_back("m39");
  m01.push_back("m40");
  m01.push_back("m41");
  m01.push_back("m42");
  m01.push_back("m43");
  m01.push_back("m44");
  m01.push_back("m45");
  m01.push_back("m46");
  m01.push_back("m47");
  m01.push_back("m48");
  m01.push_back("m49");
  m01.push_back("m50");
  m01.push_back("m51");
  m01.push_back("m52");
  m01.push_back("m53");
  m01.push_back("m54");
  m01.push_back("m55");
  m01.push_back("m56");
  m01.push_back("m57");
  m01.push_back("m58");
  m01.push_back("m59");
  m01.push_back("m60");
  m01.push_back("m61");
  m01.push_back("m62");
  m01.push_back("m63");
  m01.push_back("m64");
  m01.push_back("m65");

  route_map["m01"] = m01;

  std::vector<std::string> m02;
  m02.push_back("m02");
  m02.push_back("m05");
  m02.push_back("m06");
  m02.push_back("m11");
  m02.push_back("m12");
  m02.push_back("m13");
  m02.push_back("m14");
  m02.push_back("m23");
  m02.push_back("m24");
  m02.push_back("m25");
  m02.push_back("m26");
  m02.push_back("m27");
  m02.push_back("m28");
  m02.push_back("m29");
  m02.push_back("m30");

  m02.push_back("m66");
  m02.push_back("m67");
  m02.push_back("m68");
  m02.push_back("m69");
  m02.push_back("m70");
  m02.push_back("m71");
  m02.push_back("m72");
  m02.push_back("m73");
  m02.push_back("m74");
  m02.push_back("m75");
  m02.push_back("m76");
  m02.push_back("m77");
  m02.push_back("m78");
  m02.push_back("m79");
  m02.push_back("m80");
  m02.push_back("m81");
  m02.push_back("m82");
  m02.push_back("m83");
  m02.push_back("m84");
  m02.push_back("m85");
  m02.push_back("m86");
  m02.push_back("m87");
  m02.push_back("m88");
  m02.push_back("m89");
  m02.push_back("m90");
  m02.push_back("m91");
  m02.push_back("m92");
  m02.push_back("m93");
  m02.push_back("m94");
  m02.push_back("m95");
  m02.push_back("m96");
  m02.push_back("m97");
  m02.push_back("m98");
  m02.push_back("m99");
  m02.push_back("m100");

  route_map["m02"] = m02;


  // layer 2
  std::vector<std::string> m03;
  m03.push_back("m03");
  m03.push_back("m07");
  m03.push_back("m08");
  m03.push_back("m15");
  m03.push_back("m16");
  m03.push_back("m17");
  m03.push_back("m18");

  m03.push_back("m31");
  m03.push_back("m32");
  m03.push_back("m33");
  m03.push_back("m34");
  m03.push_back("m35");
  m03.push_back("m36");
  m03.push_back("m37");
  m03.push_back("m38");
  m03.push_back("m39");
  m03.push_back("m40");
  m03.push_back("m41");
  m03.push_back("m42");
  m03.push_back("m43");
  m03.push_back("m44");
  m03.push_back("m45");
  m03.push_back("m46");
  m03.push_back("m47");
  m03.push_back("m48");
  m03.push_back("m49");
  m03.push_back("m50");

  route_map["m03"] = m03;

  std::vector<std::string> m04;
  m04.push_back("m04");
  m04.push_back("m09");
  m04.push_back("m10");
  m04.push_back("m19");
  m04.push_back("m20");
  m04.push_back("m21");
  m04.push_back("m22");

  m04.push_back("m51");
  m04.push_back("m52");
  m04.push_back("m53");
  m04.push_back("m54");
  m04.push_back("m55");
  m04.push_back("m56");
  m04.push_back("m57");
  m04.push_back("m58");
  m04.push_back("m59");
  m04.push_back("m60");
  m04.push_back("m61");
  m04.push_back("m62");
  m04.push_back("m63");
  m04.push_back("m64");
  m04.push_back("m65");

  route_map["m04"] = m04;

  std::vector<std::string> m05;
  m05.push_back("m05");
  m05.push_back("m11");
  m05.push_back("m12");
  m05.push_back("m23");
  m05.push_back("m24");
  m05.push_back("m25");
  m05.push_back("m26");

  m05.push_back("m66");
  m05.push_back("m67");
  m05.push_back("m68");
  m05.push_back("m69");
  m05.push_back("m70");
  m05.push_back("m71");
  m05.push_back("m72");
  m05.push_back("m73");
  m05.push_back("m74");
  m05.push_back("m75");
  m05.push_back("m76");
  m05.push_back("m77");
  m05.push_back("m78");
  m05.push_back("m79");
  m05.push_back("m80");
  m05.push_back("m81");
  m05.push_back("m82");
  m05.push_back("m83");
  m05.push_back("m84");
  m05.push_back("m85");

  route_map["m05"] = m05;

  std::vector<std::string> m06;
  m06.push_back("m06");
  m06.push_back("m13");
  m06.push_back("m14");
  m06.push_back("m27");
  m06.push_back("m28");
  m06.push_back("m29");
  m06.push_back("m30");

  m06.push_back("m86");
  m06.push_back("m87");
  m06.push_back("m88");
  m06.push_back("m89");
  m06.push_back("m90");
  m06.push_back("m91");
  m06.push_back("m92");
  m06.push_back("m93");
  m06.push_back("m94");
  m06.push_back("m95");
  m06.push_back("m96");
  m06.push_back("m97");
  m06.push_back("m98");
  m06.push_back("m99");
  m06.push_back("m100");

  route_map["m06"] = m06;


  // layer 3
  std::vector<std::string> m07;
  m07.push_back("m07");
  m07.push_back("m15");
  m07.push_back("m16");

  m07.push_back("m31");
  m07.push_back("m32");
  m07.push_back("m33");
  m07.push_back("m34");
  m07.push_back("m35");
  m07.push_back("m36");
  m07.push_back("m37");
  m07.push_back("m38");
  m07.push_back("m39");
  m07.push_back("m40");

  route_map["m07"] = m07;

  std::vector<std::string> m08;
  m08.push_back("m08");
  m08.push_back("m17");
  m08.push_back("m18");

  m08.push_back("m41");
  m08.push_back("m42");
  m08.push_back("m43");
  m08.push_back("m44");
  m08.push_back("m45");
  m08.push_back("m46");
  m08.push_back("m47");
  m08.push_back("m48");
  m08.push_back("m49");
  m08.push_back("m50");

  route_map["m08"] = m08;

  std::vector<std::string> m09;
  m09.push_back("m09");
  m09.push_back("m19");
  m09.push_back("m20");

  m09.push_back("m51");
  m09.push_back("m52");
  m09.push_back("m53");
  m09.push_back("m54");
  m09.push_back("m55");
  m09.push_back("m56");
  m09.push_back("m57");
  m09.push_back("m58");
  m09.push_back("m59");
  m09.push_back("m60");
  route_map["m09"] = m09;

  std::vector<std::string> m10;
  m10.push_back("m10");
  m10.push_back("m21");
  m10.push_back("m22");

  m10.push_back("m61");
  m10.push_back("m62");
  m10.push_back("m63");
  m10.push_back("m64");
  m10.push_back("m65");
  route_map["m10"] = m10;

  std::vector<std::string> m11;
  m11.push_back("m11");
  m11.push_back("m23");
  m11.push_back("m24");

  m11.push_back("m66");
  m11.push_back("m67");
  m11.push_back("m68");
  m11.push_back("m69");
  m11.push_back("m70");
  m11.push_back("m71");
  m11.push_back("m72");
  m11.push_back("m73");
  m11.push_back("m74");
  m11.push_back("m75");
  route_map["m11"] = m11;

  std::vector<std::string> m12;
  m12.push_back("m12");
  m12.push_back("m25");
  m12.push_back("m26");

  m12.push_back("m76");
  m12.push_back("m77");
  m12.push_back("m78");
  m12.push_back("m79");
  m12.push_back("m80");
  m12.push_back("m81");
  m12.push_back("m82");
  m12.push_back("m83");
  m12.push_back("m84");
  m12.push_back("m85");
  route_map["m12"] = m12;

  std::vector<std::string> m13;
  m13.push_back("m13");
  m13.push_back("m27");
  m13.push_back("m28");

  m13.push_back("m86");
  m13.push_back("m87");
  m13.push_back("m88");
  m13.push_back("m89");
  m13.push_back("m90");
  m13.push_back("m91");
  m13.push_back("m92");
  m13.push_back("m93");
  m13.push_back("m94");
  m13.push_back("m95");
  route_map["m13"] = m13;

  std::vector<std::string> m14;
  m14.push_back("m14");
  m14.push_back("m29");
  m14.push_back("m30");

  m14.push_back("m96");
  m14.push_back("m97");
  m14.push_back("m98");
  m14.push_back("m99");
  m14.push_back("m100");
  route_map["m14"] = m14;

  // layer 4
  std::vector<std::string> m15;
  m15.push_back("m15");

  m15.push_back("m31");
  m15.push_back("m32");
  m15.push_back("m33");
  m15.push_back("m34");
  m15.push_back("m35");
  route_map["m15"] = m15;

  std::vector<std::string> m16;
  m16.push_back("m16");

  m16.push_back("m36");
  m16.push_back("m37");
  m16.push_back("m38");
  m16.push_back("m39");
  m16.push_back("m40");
  route_map["m16"] = m16;

  std::vector<std::string> m17;
  m17.push_back("m17");

  m17.push_back("m41");
  m17.push_back("m42");
  m17.push_back("m43");
  m17.push_back("m44");
  m17.push_back("m45");
  route_map["m17"] = m17;

  std::vector<std::string> m18;
  m18.push_back("m18");

  m18.push_back("m46");
  m18.push_back("m47");
  m18.push_back("m48");
  m18.push_back("m49");
  m18.push_back("m50");
  route_map["m18"] = m18;

  std::vector<std::string> m19;
  m19.push_back("m19");

  m19.push_back("m51");
  m19.push_back("m52");
  m19.push_back("m53");
  m19.push_back("m54");
  m19.push_back("m55");
  route_map["m19"] = m19;

  std::vector<std::string> m20;
  m20.push_back("m20");

  m20.push_back("m56");
  m20.push_back("m57");
  m20.push_back("m58");
  m20.push_back("m59");
  m20.push_back("m60");
  route_map["m20"] = m20;

  std::vector<std::string> m21;
  m21.push_back("m21");

  m21.push_back("m61");
  m21.push_back("m62");
  m21.push_back("m63");
  route_map["m21"] = m21;

  std::vector<std::string> m22;
  m22.push_back("m22");

  m22.push_back("m64");
  m22.push_back("m65");
  route_map["m22"] = m22;

  std::vector<std::string> m23;
  m23.push_back("m23");

  m23.push_back("m66");
  m23.push_back("m67");
  m23.push_back("m68");
  m23.push_back("m69");
  m23.push_back("m70");
  route_map["m23"] = m23;

  std::vector<std::string> m24;
  m24.push_back("m24");

  m24.push_back("m71");
  m24.push_back("m72");
  m24.push_back("m73");
  m24.push_back("m74");
  m24.push_back("m75");
  route_map["m24"] = m24;

  std::vector<std::string> m25;
  m25.push_back("m25");

  m25.push_back("m76");
  m25.push_back("m77");
  m25.push_back("m78");
  m25.push_back("m79");
  m25.push_back("m80");
  route_map["m25"] = m25;

  std::vector<std::string> m26;
  m26.push_back("m26");

  m26.push_back("m81");
  m26.push_back("m82");
  m26.push_back("m83");
  m26.push_back("m84");
  m26.push_back("m85");
  route_map["m26"] = m26;

  std::vector<std::string> m27;
  m27.push_back("m27");

  m27.push_back("m86");
  m27.push_back("m87");
  m27.push_back("m88");
  m27.push_back("m89");
  m27.push_back("m90");
  route_map["m27"] = m27;

  std::vector<std::string> m28;
  m28.push_back("m28");

  m28.push_back("m91");
  m28.push_back("m92");
  m28.push_back("m93");
  m28.push_back("m94");
  m28.push_back("m95");
  route_map["m28"] = m28;

  std::vector<std::string> m29;
  m29.push_back("m29");

  m29.push_back("m96");
  m29.push_back("m97");
  m29.push_back("m98");
  route_map["m29"] = m29;

  std::vector<std::string> m30;
  m30.push_back("m30");

  m30.push_back("m99");
  m30.push_back("m100");
  route_map["m30"] = m30;

  std::vector<std::string> m31;
  std::vector<std::string> m32;
  std::vector<std::string> m33;
  std::vector<std::string> m34;
  std::vector<std::string> m35;
  std::vector<std::string> m36;
  std::vector<std::string> m37;
  std::vector<std::string> m38;
  std::vector<std::string> m39;
  std::vector<std::string> m40;
  std::vector<std::string> m41;
  std::vector<std::string> m42;
  std::vector<std::string> m43;
  std::vector<std::string> m44;
  std::vector<std::string> m45;
  std::vector<std::string> m46;
  std::vector<std::string> m47;
  std::vector<std::string> m48;
  std::vector<std::string> m49;
  std::vector<std::string> m50;
  std::vector<std::string> m51;
  std::vector<std::string> m52;
  std::vector<std::string> m53;
  std::vector<std::string> m54;
  std::vector<std::string> m55;
  std::vector<std::string> m56;
  std::vector<std::string> m57;
  std::vector<std::string> m58;
  std::vector<std::string> m59;
  std::vector<std::string> m60;
  std::vector<std::string> m61;
  std::vector<std::string> m62;
  std::vector<std::string> m63;
  std::vector<std::string> m64;
  std::vector<std::string> m65;
  std::vector<std::string> m66;
  std::vector<std::string> m67;
  std::vector<std::string> m68;
  std::vector<std::string> m69;
  std::vector<std::string> m70;
  std::vector<std::string> m71;
  std::vector<std::string> m72;
  std::vector<std::string> m73;
  std::vector<std::string> m74;
  std::vector<std::string> m75;
  std::vector<std::string> m76;
  std::vector<std::string> m77;
  std::vector<std::string> m78;
  std::vector<std::string> m79;
  std::vector<std::string> m80;
  std::vector<std::string> m81;
  std::vector<std::string> m82;
  std::vector<std::string> m83;
  std::vector<std::string> m84;
  std::vector<std::string> m85;
  std::vector<std::string> m86;
  std::vector<std::string> m87;
  std::vector<std::string> m88;
  std::vector<std::string> m89;
  std::vector<std::string> m90;
  std::vector<std::string> m91;
  std::vector<std::string> m92;
  std::vector<std::string> m93;
  std::vector<std::string> m94;
  std::vector<std::string> m95;
  std::vector<std::string> m96;
  std::vector<std::string> m97;
  std::vector<std::string> m98;
  std::vector<std::string> m99;
  std::vector<std::string> m100;

  m31.push_back("m31");
  m32.push_back("m32");
  m33.push_back("m33");
  m34.push_back("m34");
  m35.push_back("m35");
  m36.push_back("m36");
  m37.push_back("m37");
  m38.push_back("m38");
  m39.push_back("m39");
  m40.push_back("m40");
  m41.push_back("m41");
  m42.push_back("m42");
  m43.push_back("m43");
  m44.push_back("m44");
  m45.push_back("m45");
  m46.push_back("m46");
  m47.push_back("m47");
  m48.push_back("m48");
  m49.push_back("m49");
  m50.push_back("m50");
  m51.push_back("m51");
  m52.push_back("m52");
  m53.push_back("m53");
  m54.push_back("m54");
  m55.push_back("m55");
  m56.push_back("m56");
  m57.push_back("m57");
  m58.push_back("m58");
  m59.push_back("m59");
  m60.push_back("m60");
  m61.push_back("m61");
  m62.push_back("m62");
  m63.push_back("m63");
  m64.push_back("m64");
  m65.push_back("m65");
  m66.push_back("m66");
  m67.push_back("m67");
  m68.push_back("m68");
  m69.push_back("m69");
  m70.push_back("m70");
  m71.push_back("m71");
  m72.push_back("m72");
  m73.push_back("m73");
  m74.push_back("m74");
  m75.push_back("m75");
  m76.push_back("m76");
  m77.push_back("m77");
  m78.push_back("m78");
  m79.push_back("m79");
  m80.push_back("m80");
  m81.push_back("m81");
  m82.push_back("m82");
  m83.push_back("m83");
  m84.push_back("m84");
  m85.push_back("m85");
  m86.push_back("m86");
  m87.push_back("m87");
  m88.push_back("m88");
  m89.push_back("m89");
  m90.push_back("m90");
  m91.push_back("m91");
  m92.push_back("m92");
  m93.push_back("m93");
  m94.push_back("m94");
  m95.push_back("m95");
  m96.push_back("m96");
  m97.push_back("m97");
  m98.push_back("m98");
  m99.push_back("m99");
  m100.push_back("m100");

  route_map["m31"] = m31;
  route_map["m32"] = m32;
  route_map["m33"] = m33;
  route_map["m34"] = m34;
  route_map["m35"] = m35;
  route_map["m36"] = m36;
  route_map["m37"] = m37;
  route_map["m38"] = m38;
  route_map["m39"] = m39;
  route_map["m40"] = m40;
  route_map["m41"] = m41;
  route_map["m42"] = m42;
  route_map["m43"] = m43;
  route_map["m44"] = m44;
  route_map["m45"] = m45;
  route_map["m46"] = m46;
  route_map["m47"] = m47;
  route_map["m48"] = m48;
  route_map["m49"] = m49;
  route_map["m50"] = m50;
  route_map["m51"] = m51;
  route_map["m52"] = m52;
  route_map["m53"] = m53;
  route_map["m54"] = m54;
  route_map["m55"] = m55;
  route_map["m56"] = m56;
  route_map["m57"] = m57;
  route_map["m58"] = m58;
  route_map["m59"] = m59;
  route_map["m60"] = m60;
  route_map["m61"] = m61;
  route_map["m62"] = m62;
  route_map["m63"] = m63;
  route_map["m64"] = m64;
  route_map["m65"] = m65;
  route_map["m66"] = m66;
  route_map["m67"] = m67;
  route_map["m68"] = m68;
  route_map["m69"] = m69;
  route_map["m70"] = m70;
  route_map["m71"] = m71;
  route_map["m72"] = m72;
  route_map["m73"] = m73;
  route_map["m74"] = m74;
  route_map["m75"] = m75;
  route_map["m76"] = m76;
  route_map["m77"] = m77;
  route_map["m78"] = m78;
  route_map["m79"] = m79;
  route_map["m80"] = m80;
  route_map["m81"] = m81;
  route_map["m82"] = m82;
  route_map["m83"] = m83;
  route_map["m84"] = m84;
  route_map["m85"] = m85;
  route_map["m86"] = m86;
  route_map["m87"] = m87;
  route_map["m88"] = m88;
  route_map["m89"] = m89;
  route_map["m90"] = m90;
  route_map["m91"] = m91;
  route_map["m92"] = m92;
  route_map["m93"] = m93;
  route_map["m94"] = m94;
  route_map["m95"] = m95;
  route_map["m96"] = m96;
  route_map["m97"] = m97;
  route_map["m98"] = m98;
  route_map["m99"] = m99;
  route_map["m100"] = m100;

  neighbor_map["m01"] = m21;

  std::string dummy;

  mm.getModel(dummy, route_map, neighbor_map);

  /* write minizinc file */
  std::string minizinc_filename;
  std::stringstream epoch_string;
  epoch_string << mm.getEpoch();
  minizinc_filename.assign("model-");
  minizinc_filename.append(epoch_string.str());
  minizinc_filename.append(".mzn");

  std::ofstream minizincfile(minizinc_filename.c_str(), std::ios_base::out | std::ios_base::trunc);

  if (minizincfile.is_open())
  {
    std::cout << "getconfig: writing model file" << std::endl;

    minizincfile << dummy;
    minizincfile.close();
  }
  else
    std::cout << "getconfig: Unable to open model file" << std::endl;


  std::vector<std::string> optimal_solution_vector;
  MinizincPlanner::solve(dummy, optimal_solution_vector);


  if (!optimal_solution_vector.empty())
  {
    std::cout << "got solution" << std::endl;
  }



  return 0;
}


